// import 'dart:async';
// import 'dart:developer';
// import 'dart:io';
// import 'dart:isolate';
// import 'dart:ui';

// import 'package:flutter/material.dart';
// import 'package:flutter_downloader/flutter_downloader.dart';
// import 'package:path_provider/path_provider.dart';
// import 'package:shopping_group/res/colors.dart';
// import 'package:shopping_group/res/dimens.dart';
// import 'package:shopping_group/utils/download_util.dart';
// import 'package:shopping_group/utils/object_util.dart';
// import 'package:shopping_group/utils/widget_utils.dart';
// import 'package:open_file/open_file.dart';

// ///自定义dialog
// ///执行下载操作
// ///显示下载进度
// ///下载完成后执行安装操作
// ///[version]新版本的版本号,[url]新版本app下载地址
// class DownloadProgressDialog extends StatefulWidget {
//   DownloadProgressDialog(this.version, this.url, this.name, {Key key}) : super(key: key);

//   final String version;
//   final String url;
//   final String name;

//   @override
//   _DownloadProgressDialogState createState() => _DownloadProgressDialogState();
// }

// class _DownloadProgressDialogState extends State<DownloadProgressDialog> {
//   List<_TaskInfo> _tasks;
//   String _localPath;
//   ReceivePort _port = ReceivePort();
//   var platform;
//   var _apks = [
//     {
//       'name': 'lizheng_life_v1052.apk',
//       'link': 'https://lizhengyouxuan.oss-cn-shanghai.aliyuncs.com/lizhengyouxuan/apk/lizheng_life_v1052.apk'
//     },
//   ];
//   //下载进度
//   int _progress;
//   List<_ItemHolder> _items;
//   @override
//   void initState() {
//     super.initState();

//     _apks = [
//       {
//         'name': widget.name ?? "lizheng_life.apk",
//         'link': widget.url,
//       },
//     ];
//     platform = DownLoadUtil.platform;
//     //初始化下载进度
//     _progress = 0;

//     _bindBackgroundIsolate();
//     FlutterDownloader.registerCallback(downloadCallback);

//     _prepare().then((value) => _requestDownload(_tasks[0]));
//   }

//   @override
//   Widget build(BuildContext context) {
//     return SimpleDialog(
//       title: WidgetUtils.getTextColorView('下载更新', Colours.themeColor, Dimens.FONT_SIZE_20),
//       children: <Widget>[
//         SizedBox(
//           height: 8,
//         ),
//         Padding(
//           padding: const EdgeInsets.symmetric(horizontal: 16),
//           child: WidgetUtils.getTextColorView('最新版本:${widget.version}', Colours.themeColor, Dimens.FONT_SIZE_16),
//         ),
//         SizedBox(
//           height: 8,
//         ),
//         Padding(
//           padding: EdgeInsets.symmetric(horizontal: 16),
//           child: WidgetUtils.getTextColorView(
//               ObjectUtil.isEmptyList(_tasks) ? '下载进度0%' : '下载进度 $_progress%', Colours.text_2222, Dimens.FONT_SIZE_16),
//         ),
//         SizedBox(
//           height: 8,
//         ),
//         Padding(
//           padding: const EdgeInsets.symmetric(horizontal: 16),
//           child: LinearProgressIndicator(
//             value: ObjectUtil.isEmptyList(_tasks) ? 0 : _progress / 100,
//           ),
//         ),
//         showCancelBottom(),
//       ],
//     );
//   }

//   Widget showCancelBottom() {
//     return Flex(
//       direction: Axis.horizontal,
//       mainAxisAlignment: MainAxisAlignment.center,
//       crossAxisAlignment: CrossAxisAlignment.center,
//       children: <Widget>[
//         Padding(
//           padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 8),
//           child: WidgetUtils.crteateRaisedButton('更新中...', buttonListener: () {
//             if (100 == _progress) {
//               _installApk();
//             }
//             // RouteUtil.closeView();
//           }),
//         ),
//       ],
//     );
//   }

//   void _requestDownload(_TaskInfo task) async {
//     task.taskId = await FlutterDownloader.enqueue(
//         url: task.link,
//         // headers: {"auth": "test_for_sql_encoding"},
//         fileName: task.name,
//         savedDir: _localPath,
//         showNotification: true,
//         openFileFromNotification: true);
//   }

//   Future<Null> _prepare() async {
//     final tasks = await FlutterDownloader.loadTasks();

//     int count = 0;
//     _tasks = [];
//     _items = [];

//     _tasks.addAll(_apks.map((document) => _TaskInfo(name: document['name'], link: document['link'])));

//     _items.add(_ItemHolder(name: 'apks'));
//     for (int i = count; i < _tasks.length; i++) {
//       _items.add(_ItemHolder(name: _tasks[i].name, task: _tasks[i]));
//       count++;
//     }

//     tasks?.forEach((task) {
//       for (_TaskInfo info in _tasks) {
//         if (info.link == task.url) {
//           info.taskId = task.taskId;
//           info.status = task.status;
//           info.progress = task.progress;
//         }
//       }
//     });

//     _localPath = (await _findLocalPath()) + Platform.pathSeparator + 'Download';

//     final savedDir = Directory(_localPath);
//     bool hasExisted = await savedDir.exists();
//     if (!hasExisted) {
//       savedDir.create();
//     }
//   }

//   Future<String> _findLocalPath() async {
//     final directory = platform == TargetPlatform.android
//         ? await getExternalStorageDirectory()
//         : await getApplicationDocumentsDirectory();
//     return directory.path;
//   }

//   void _bindBackgroundIsolate() {
//     bool isSuccess = IsolateNameServer.registerPortWithName(_port.sendPort, 'downloader_send_port');
//     if (!isSuccess) {
//       _unbindBackgroundIsolate();
//       _bindBackgroundIsolate();
//       return;
//     }
//     _port.listen((dynamic data) {
//       // if (debug) {
//       // print('UI Isolate Callback: $data');
//       // }

//       log("data == ${data}");

//       String id = data[0];
//       DownloadTaskStatus status = data[1];
//       int progress = data[2];

//       final task = _tasks?.firstWhere((task) => task.taskId == id);
//       if (task != null) {
//         setState(() {
//           task.status = status;
//           task.progress = progress;
//           _progress = progress;
//         });

//         //   // 当下载完成时，调用安装
//         if (task.status == DownloadTaskStatus.complete) {
//           //关闭更新进度框
//           // Navigator.of(context).pop();
//           //安装下载完的apk
//           _installApk();
//         }
//       }
//     });
//   }

//   void _unbindBackgroundIsolate() {
//     IsolateNameServer.removePortNameMapping('downloader_send_port');
//   }

//   static void downloadCallback(String id, DownloadTaskStatus status, int progress) {
//     // if (debug) {
//     // print(
//     //     'Background Isolate Callback: task ($id) is in status ($status) and process ($progress)');
//     // }
//     final SendPort send = IsolateNameServer.lookupPortByName('downloader_send_port');
//     send.send([id, status, progress]);
//   }

//   //安装
//   Future<Null> _installApk() async {
//     String name = widget.name ?? "lizheng_life.apk";

//     OpenFile.open(_localPath + '/$name');
//   }

//   @override
//   void dispose() {
//     _unbindBackgroundIsolate();
//     super.dispose();
//   }
// }

// class _ItemHolder {
//   final String name;
//   final _TaskInfo task;

//   _ItemHolder({this.name, this.task});
// }

// class _TaskInfo {
//   final String name;
//   final String link;

//   String taskId;
//   int progress = 0;
//   DownloadTaskStatus status = DownloadTaskStatus.undefined;

//   _TaskInfo({this.name, this.link});
// }
